import java.util.ArrayList;
import java.util.List;

public class ExternalMemory {
    private List<Block> blocks; // 存储块的列表

    public ExternalMemory() {
        blocks = new ArrayList<>();
    }

    // 分配外存空间
    public boolean allocate(int size) {
        for (Block block : blocks) {
            if (block.getSize() >= size) {
                // 找到一块足够大的存储块，将其地址返回给请求者使用
                return true; // 成功分配
            }
        }
        // 没有足够的存储块可以分配，返回false表示分配失败
        return false;
    }

    // 回收外存空间
    public void deallocate(int address, int size) {
        for (Block block : blocks) {
            if (block.getAddress() == address && block.getSize() == size) {
                // 找到需要回收的存储块，将其从列表中移除表示回收成功
                blocks.remove(block);
                break; // 找到后即停止循环，继续处理下一个需要回收的存储块（如果有的话）
            }
        }
    }
}